package pers.ree.demo.base;


/**
 * 运算符相关的demo
 */
public class OperatorDemo {
    public static void main(String[] args) {
        int i = 4>>1; // 右移1位=整除以2
        // 2
        System.out.println(i);

        i = i<<1; // 左移1位=乘以2
        // 4
        System.out.println(i);

        i = i>>>1; // 正数无符号右移1位=乘以2
        System.out.println(i);

        /*** 负数的位移运算 ***/
        i = -4>>1;
        // -2
        System.out.println(i);

        i = i<<1;
        // -4
        System.out.println(i);

        i = i>>>1;
        // 2^30-1，-4的补码为11111111 11111111 11111111 11111100， >>>1后为01111111 11111111 11111111 11111110
        System.out.println(i);

        i = (int) Math.pow(2.0, 31) - 1; // 结果等同于-4>>>1
        System.out.println(i);
    }
}
